# 字典（Dictionary）用于存储键值对（key-value pairs）。字典是无序的、可变的，并且键必须是不可变类型。
# 不可变类型（Immutable types）指的是那些一旦创建之后其值就不能更改的对象类型。比如：字符串（String）、数字（Numbers）、元组（Tuple），布尔类型（bool），但布尔类型（bool）只有True和False两个值。

# 字典可以通过花括号 {} 来创建，并且键值对之间用冒号 : 分隔。

'''
需要学习的用法：
1. 创建一个字典
2. 访问字典中的值
3. 修改字典中的值
4. 添加新元素
5. 删除元素
6. 使用 get() 方法
7. 获取键、值和键值对 keys() values() items()
8. 更新字典 update(params)
9. 使用 pop() 方法
10. 使用 popitem() 方法
11. 清空字典 clear()
'''
# 创建一个字典
person = {
    "name": "Alice",
    "age": 30,
    "city": "New York"
}

# 访问字典中的值
name = person["name"]  # "Alice"
age = person["age"]    # 30

# 修改字典中的值
person["age"] = 31

# 添加新元素
person["email"] = "alice@example.com"

# 删除元素
del person["city"]

# 使用 get() 方法，第一个参数是key，第二个参数是默认值，如果key不存在，则返回默认值
email = person.get("email", "default@example.com")  # "alice@example.com"
phone = person.get("phone", "No phone number")      # "No phone number"

# 获取键、值和键值对
keys = person.keys()  # dict_keys(['name', 'age', 'email'])
print('keys:',keys)
print('keys type:', type(keys))
values = person.values()  # dict_values(['Alice', 31, 'alice@example.com'])
items = person.items()  # dict_items([('name', 'Alice'), ('age', 31), ('email', 'alice@example.com')])

# 更新字典
person.update({"age": 32, "city": "San Francisco"})
# 可以更新进去一个本不存在的key-value
person.update({"age": 32, "city": "San Francisco","child":"Ali"})

# 使用 pop() 方法，会返回删除的元素，如果key不存在，则返回默认值
city = person.pop("city", "Unknown City")  # "San Francisco"

# 使用 popitem() 方法
item = person.popitem()  # 可能返回 ('email', 'alice@example.com')

# 清空字典
person.clear()